HandStack 서버 안정성 높이기

PM2를 이용한 서버 프로세스 관리 및 로그 모니터링

QCN

PM2, 서버를 위한 든든한 경비원

  • PM2란 무엇일까요?
    • 원래 Node.js 애플리케이션을 위해 만들어진 프로세스 관리 도구지만, 임의의 실행 파일도 이름을 붙여 관리할 수 있습니다.
    • Linux에서 ack(.NET 실행 파일)를 명명된 프로세스로 등록해 시작/중지를 스크립트화하는 데 사용합니다.
    • 서버 활동을 기록하는 로그 관리 기능을 통합적으로 지원합니다.
PM2는 여러분의 백엔드 서버를 관리해 주는 '경비원' 같아요. 프로세스를 이름으로 등록해두면 누가 언제 들어왔는지(로그) 꼼꼼히 기록해 두죠.
QCN

핸즈온: PM2 설치 및 실행

  • 목표: PM2를 설치하고 HandStack ack 프로세스를 실행해봅니다.

    1. PM2 전역 설치
    • 터미널에 아래 명령어를 입력하여 PM2를 설치합니다.
    npm install -g pm2
    
    1. HandStack ack 프로세스를 PM2로 실행
    • --name 옵션으로 프로세스에 별명을 붙여 관리하기 쉽게 만듭니다.
    • HandStack은 ack 자체가 요청을 처리하는 .NET 프로세스이므로, PM2가 아닌 다른 경로(예: agent 호스트)로 재시작을 이중 관리하지 않도록 --no-autorestart를 함께 사용합니다.
    # ack 실행 파일 예시
    pm2 start <ack 실행 파일 경로> --name ack --no-autorestart
    
    • 모듈별 task.ps1, task.bat, task.sh로 이런 프로세스 제어를 자동화할 수 있습니다.
QCN

PM2 필수 명령어

  • 다음 명령어들로 실행 중인 서버 프로세스를 손쉽게 제어할 수 있습니다.
명령어 설명
pm2 list 현재 실행 중인 모든 프로세스 목록을 보여줍니다.
pm2 logs 모든 프로세스의 실시간 로그를 출력합니다.
pm2 restart [앱이름] 지정한 앱을 재시작합니다.
pm2 stop [앱이름] 지정한 앱을 중지시킵니다.
pm2 delete [앱이름] PM2 목록에서 지정한 앱을 삭제합니다.
QCN

핸즈온: 실시간 로그 확인하기

  • 목표: pm2 logs 명령어로 HandStack ack 프로세스의 활동을 실시간으로 관찰합니다.

  • HandStack 자체의 요청/응답 로그는 $HANDSTACK_HOME/log 아래 모듈별 파일에도 별도로 쌓이므로, pm2 logs와 함께 확인하면 좋습니다.

  • pm2 logs 명령어 사용법

    • 특정 앱의 로그만 보거나, 최신 로그의 줄 수를 지정할 수 있습니다.

    • --follow 옵션은 새로운 로그가 발생할 때마다 계속해서 보여줍니다.

      # ack 프로세스의 최신 로그 100줄을 실시간으로 확인
      pm2 logs ack --lines 100 --follow
      
  • 재시작 테스트

      1. 새 빌드로 ack 실행 파일을 교체합니다.
      1. pm2 restart ack 명령어를 실행합니다.
      1. pm2 logs ack로 정상 기동 로그가 다시 출력되는지 확인합니다.
QCN

서버의 건강 상태 확인, 모니터링

로깅이 서버의 '일기장'이라면, 모니터링은 서버의 '건강검진표'입니다. 우리 서버가 얼마나 건강하게 잘 돌아가는지 숫자로 보여주죠.
  • 모니터링의 목적
    • 시스템의 성능, 안정성, 가용성을 지속적으로 확인합니다.
    • 문제가 발생했을 때 신속하게 원인을 감지하고 대응하기 위함입니다.
QCN

무엇을 확인해야 할까? 주요 모니터링 지표

  • 백엔드 서버의 건강 상태를 파악하기 위한 핵심 지표들입니다.

  • 시스템 리소스

    • CPU 사용률: 서버의 두뇌가 얼마나 바쁘게 일하는지
    • 메모리 사용률: 작업 공간을 얼마나 사용하고 있는지
    • 네트워크 I/O: 데이터를 얼마나 주고받는지
    • 디스크 I/O: 하드디스크를 얼마나 읽고 쓰는지
  • 애플리케이션 성능

    • API 응답 시간: 사용자의 요청에 얼마나 빨리 대답하는지
    • 에러율: 요청 중 실패하는 비율이 얼마나 되는지
    • 요청 처리량 (Throughput): 일정 시간 동안 얼마나 많은 요청을 처리하는지
QCN

핸즈온: PM2로 기본 모니터링하기

  • 목표: pm2 monit 명령어로 CLI 기반 대시보드에서 서버 상태를 관찰합니다.

    1. 모니터링 대시보드 실행
    • 터미널에 아래 명령어를 입력합니다.
    pm2 monit
    
    • 실행 중인 프로세스 목록과 함께 CPU, 메모리 사용량을 실시간으로 볼 수 있습니다.
    1. 부하 테스트 및 관찰
    • Postman과 같은 도구로 서버 API에 반복적으로 요청을 보냅니다.
    • pm2 monit 대시보드에서 부하에 따라 CPU와 메모리 사용량이 어떻게 변하는지 관찰합니다.
QCN

더 나아가기: 전문 모니터링 도구

  • PM2의 모니터링은 간단한 현황 파악에 유용합니다.

  • 더 깊이 있고, 장기적인 데이터 분석을 위해서는 전문 도구를 사용합니다.

  • 주요 모니터링 도구 (개념)

    • Prometheus: 시계열 데이터를 수집하고 저장하는 데이터베이스
    • Grafana: Prometheus 등의 데이터를 가져와 시각적으로 아름다운 대시보드를 만드는 도구
    • ELK Stack: 로그 데이터를 수집(Logstash), 검색/분석(Elasticsearch), 시각화(Kibana)하는 통합 솔루션
  • 이 도구들은 HandStack 서버 운영을 더욱 전문적으로 만들어줍니다.

QCN

정리

  • PM2를 사용하면 ack 같은 서버 프로세스를 이름으로 등록해 안정적으로 시작/중지/재시작을 관리할 수 있습니다.
  • pm2 logs 명령어로 서버의 활동 기록을 실시간으로 확인할 수 있습니다.
  • 모니터링은 서버의 건강 상태를 진단하는 필수 활동입니다.
  • pm2 monit으로 CPU, 메모리 등 기본 지표를 쉽게 확인할 수 있습니다.
  • HandStack으로 만든 서비스를 안정적으로 운영하기 위해 로깅과 모니터링을 생활화합시다.
QCN

Q & A

QCN